package com.zmn.oms.zmn.business.interfaces.work;

import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.dto.work.masterwork.ModifyProductDTO;
import com.zmn.oms.model.dto.work.masterwork.ModifyQuotationDTO;
import com.zmn.oms.model.entity.work.OrderWork;

/**
 * 类描述 
 *
 * @author sunlife
 * @version 1.0
 * @date 2019/9/5 16:11
 */
public interface OrderWorkModifyProductBService {
    /**
     * 工程师修改订单产品，该方法会影响订单的计价器类型。
     *  该方法会通过参数中传入的产品ID自动判断订单的计价器类型，参数中传入的计价器类型字段，会被忽略
     */
    void updateOrderProductByMaster(ModifyProductDTO modifyProductDTO) throws OmsBaseException;

    /**
     * 工程师修改订单产品为新机销售产品，该方法会影响订单的计价器类型。
     *  该方法会通过参数中传入的产品ID自动判断订单的计价器类型，参数中传入的计价器类型字段，会被忽略
     */
    void updateOrderSaleProductByMaster(ModifyProductDTO modifyProductDTO) throws OmsBaseException;

    /**
     * 工程师修改订单产品品牌
     */
    void updateOrderProductBrandByMaster(ModifyProductDTO modifyProductDTO) throws OmsBaseException;

    /**
     * 修改订单产品，该方法会影响订单的计价器类型。
     *  该方法会以参数中传入的servItmeType字段作为订单最终的计价器类型；如果该字段为空，会通过产品ID自动判断；
     */
    void updateOrderProduct(ModifyProductDTO modifyProductDTO) throws OmsBaseException;

    /**
     * 检查是否可以修改产品
     */
    String checkUpdateProduct(ModifyProductDTO modifyProductDTO);

    /**
     * 重置工单修改产品次数
     */
    void resetUpdateProductCount(Long workId);
}
